package java核心及工具类.Format类;

/*
【DateFormat类】
java.text.DateFormat 是日期/时间格式化子类的抽象类，我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

▪格式化∶按照指定的格式，从Date对象转换为String对象。
▪解析:按照指定的格式，从String对象转换为Date对象。

DateFormat类概述

DateFormat 是日期/时间格式化子类的抽象类，它以与语言无关的方式格式化并解析日期或时间。是抽象类，所以使用其子类SimpleDateFormat构造方法

public SimpleDateFormat()
public SimpleDateFormat(String pattern)  //String pattern :传递指定的模式模式:区分大小写的

成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source)把符合模式的字符串,解析为Date日期

DateFormat类是一个抽象类,无法直接创建对象使用,可以使用pateFormat的子类
java.text.SimpleDateFormat extends DateFormat

参数:
y   年
M   月
d   日
H   时
m   分
s   秒
写对应的模式,会把模式替换为对应的日期和时间
"yyyy-MN-dd HH : mnm : ss"
“yyyy年“月ddH阳寸mm分ss秒”注意:
模式中的字母不能更改,连接模式的符号可以改变

DateFormat结构：
public abstract class DateFormat extends Format {
	...
	public static final int ERA_FIELD = 0;
							YEAR_FIELD =1;
							MONTH_FIELD=2;
							DATE_FIELD=3;
							HOUR_OF_DAY1_FIELD=4
							HOUR_OF_DAY0_FIELD
							MINUTE_FIELD : int
							SECOND_FIELD : int
							MILLISECOND_FIELD : int
							DAY_OF_WEEK_FIELD : int
							DAY_OF_YEAR_FIELD : int
							DAY_OF_WEEK_IN_MONTH_FIELD : int
							WEEK_OF_YEAR_FIELD : int
							WEEK_OF_MONTH_FIELD : int
							AM_PM_FIELD : int
							HOUR1_FIELD : int
							HOUR0_FIELD : int
							TIMEZONE_FIELD=17;
	...
	public static final int FULL = 0;
    public static final int LONG = 1;
    public static final int MEDIUM = 2;
    public static final int SHORT = 3;
    public static final int DEFAULT = MEDIUM;
    ...
    public static class Field extends Format.Field {
    	...
    	public static final Field ERA = new Field("era", Calendar.ERA);
        public static final Field YEAR = new Field("year", Calendar.YEAR);
        public static final Field MONTH = new Field("month", Calendar.MONTH);
        public static final Field DAY_OF_MONTH = new Field("day of month", Calendar.DAY_OF_MONTH);
        public static final Field HOUR_OF_DAY1 = new Field("hour of day 1",-1);
        public static final Field HOUR_OF_DAY0 = new Field("hour of day", Calendar.HOUR_OF_DAY);
        public static final Field MINUTE =new Field("minute", Calendar.MINUTE);
        public static final Field SECOND =new Field("second", Calendar.SECOND);
        public static final Field MILLISECOND = new Field("millisecond", Calendar.MILLISECOND);
        public static final Field DAY_OF_WEEK = new Field("day of week", Calendar.DAY_OF_WEEK);
        public static final Field DAY_OF_YEAR = new Field("day of year", Calendar.DAY_OF_YEAR);
        public static final Field DAY_OF_WEEK_IN_MONTH = new Field("day of week in month",Calendar.DAY_OF_WEEK_IN_MONTH);
        public static final Field WEEK_OF_YEAR = new Field("week of year", Calendar.WEEK_OF_YEAR);
        public static final Field WEEK_OF_MONTH = new Field("week of month", Calendar.WEEK_OF_MONTH);
        public static final Field AM_PM = new Field("am pm", Calendar.AM_PM);
        public static final Field HOUR1 = new Field("hour 1", -1);
        public static final Field HOUR0 = new Field("hour", Calendar.HOUR);
        public static final Field TIME_ZONE = new Field("time zone", -1);
        ...
    }
}

static final DateFormat getDateInstance() 获取具有默认 FORMAT 区域设置的默认格式样式的日期格式化程序。
static final DateFormat getDateInstance(int style) 获取具有默认 FORMAT 区域设置的给定格式样式的日期格式化程序。
static final DateFormat getDateInstance(int style, Locale locale) 获取具有给定区域设置的给定格式样式的日期格式化程序。
static final DateFormat getDateTimeInstance() 获取具有默认 FORMAT 区域设置的默认格式样式的日期/时间格式化程序。
static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) 获取具有默认 FORMAT 区域设置的给定日期和时间格式样式的日期/时间格式化程序。
static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) 获取具有给定区域设置的给定格式样式的日期/时间格式化程序。
static final DateFormat getInstance() 获取对日期和时间都使用 SHORT 样式的默认日期/时间格式化程序。

DateFormat的format方法：
1.format(Object, StringBuffer, FieldPosition)
2.format(Date, StringBuffer, FieldPosition)
3.format(Date)
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateFormat类 {
	public static void main(String[] args) throws ParseException {
		//1.Java中的DateFormat类的getDateInstance()方法用于获取日期格式程序。该日期格式化程序带有默认语言环境的默认格式化样式。
		//用法:public static final DateFormat getDateInstance()
		//参数：该方法不带任何参数。返回值：该方法以特定格式返回日期格式化程序。
		StringBuffer bf=new StringBuffer();
		StringBuffer bf3=new StringBuffer();
		StringBuffer bf5=new StringBuffer();
		int fieldtype=0;
		FieldPosition fp1=new FieldPosition(fieldtype);//fieldtype根据显示的内容分别可选:1:Field  2.Field int  3.int
		// Initializing the first formatter 
		DateFormat DFormat = DateFormat.getDateInstance(); 
		System.out.println("Object: " + DFormat); 
		// String formatting 
		String str = DFormat.format(new Date()); 
		// Displaying the string date 
		System.out.println(str);
		
		// Initializing SimpleDateFormat 
      SimpleDateFormat SDFormat = new SimpleDateFormat("MM/dd/yyyy/hh/mm//ss"); 

      // Displaying the formats 
      Date date = new Date(); 
      String str_Date1 = SDFormat.format(date); 
      System.out.println("The Original: " + (str_Date1)); //The Original: 07/11/2022/10/13//50
      
      //2.getDateInstance(int style) 获取具有默认 FORMAT 区域设置的给定格式样式的日期格式化程序。
      //style为要格式的样式：取值为0，1，2，3；对应的格式为FULL,LONG,MEDIUM,SHORT
      DateFormat df0 = DateFormat.getDateInstance(0);
      DateFormat df00 = DateFormat.getDateInstance(DateFormat.FULL);
      System.out.println(df0.format(date));//2022年7月11日星期一
      System.out.println(df00.format(date));//2022年7月11日星期一
      DateFormat df1 = DateFormat.getDateInstance(1);
      DateFormat df10 = DateFormat.getDateInstance(DateFormat.MEDIUM);
      System.out.println(df1.format(date));//2022年7月11日
      System.out.println(df10.format(date));//2022年7月11日
      DateFormat df2 = DateFormat.getDateInstance(2);
      System.out.println(df2.format(date));//2022年7月11日
      DateFormat df3 = DateFormat.getDateInstance(3);
      System.out.println(df3.format(date));//2022/7/11
      
      //分别用FieldPosition(int field),FieldPosition(Format.Field attribute),FieldPosition(Format.Field attribute,int fieldID)
      //创建FieldPosition类实例：
      //1）FieldPosition(int field) 为给定字段创建一个FieldPosition对象。 字段由常量来标识,
      //此时int field.getField()=1, Field field.getFieldAttribute()=null
      FieldPosition field = new FieldPosition(DateFormat.YEAR_FIELD);//YEAR_FIELD可以换成MONTH_FIELD
      System.out.println(field.getField()+"  "+field.getFieldAttribute());//1  null
      //2）FieldPosition(Format.Field attribute)
      FieldPosition field1 = new FieldPosition(DateFormat.Field.YEAR);//YEAR可以换成MONTH
      System.out.println(field1.getField()+"  "+field1.getFieldAttribute());//-1  java.text.DateFormat$Field(year)
      //FieldPosition(Format.Field attribute,int fieldID)
      FieldPosition field2 = new FieldPosition(DateFormat.Field.YEAR,DateFormat.YEAR_FIELD);//
      System.out.println(field2.getField()+"  "+field2.getFieldAttribute());//1  java.text.DateFormat$Field(year)
      
      StringBuffer sb = df0.format(date, bf, field2);
      System.out.println("bf: "+bf+"  field: "+field2);
      //显示：bf: 2022年7月11日星期一  field: java.text.FieldPosition[field=1,attribute=null,beginIndex=0,endIndex=4]
      //如果YEAR换成MONTH:
      FieldPosition field3 = new FieldPosition(DateFormat.Field.MONTH,DateFormat.MONTH_FIELD);//
      System.out.println(field3.getField()+"  "+field3.getFieldAttribute());//2  java.text.DateFormat$Field(month)
      StringBuffer sb3 = df0.format(date, bf3, field3);
      System.out.println("bf3: "+bf3+"  field3: "+field3);
      //显示：bf: 2022年7月11日星期一  field: java.text.FieldPosition[field=2,attribute=java.text.DateFormat$Field(month),beginIndex=5,endIndex=6]
	
      //3.DateFormat getDateInstance(int style, Locale locale) 获取具有给定区域设置的给定格式样式的日期格式化程序。
      Locale locale = new Locale("en", "US");
      //Locale locale = new Locale("zh", "CN");
      FieldPosition field5 = new FieldPosition(DateFormat.Field.YEAR,DateFormat.YEAR_FIELD);
      DateFormat df5 = DateFormat.getDateInstance(0,locale);//FULL,US
      StringBuffer sb5 = df5.format(date, bf5, field5);
      System.out.println(sb5);//Monday, July 11, 2022
      System.out.println("bf5: "+bf5+"  field5: "+field5);
      //显示：bf5: Monday, July 11, 2022  field5: java.text.FieldPosition[field=1,attribute=java.text.DateFormat$Field(year),beginIndex=17,endIndex=21]
	
      //4. DateFormat getDateTimeInstance() 获取具有默认 FORMAT 区域设置的默认格式样式的日期/时间格式化程序。
      FieldPosition field6 = new FieldPosition(DateFormat.Field.HOUR_OF_DAY1,DateFormat.HOUR_OF_DAY1_FIELD);
      DateFormat df6=DateFormat.getDateTimeInstance();
      StringBuffer bf6=new StringBuffer();
      StringBuffer sb6=df6.format(date, bf6, field6);
      System.out.println(sb6);
      System.out.println("bf6: "+bf6+"  field6: "+field6);
      
      String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
      System.out.println(currentDateTimeString);
      //DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
      System.out.println(DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT).format(date));//2022年7月11日 下午4:42
      //DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
      System.out.println(DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.SHORT, locale).format(date));//Jul 11, 2022, 4:42 PM
      
	}
}
    


/*
【DateFormat类的format方法和parse方法】

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat.Field;
import java.util.Calendar;
import java.util.Date;
*/
/*
java.text.DateFormat|是日期/时间格式化子类的抽象类
日期/时间格式化子类(如Simplelateormat)允许进行格式化(也就是日期―文本)、(解析飞文本-日期）和标准化。
成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串Date parse(String source)把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用pateFormat的子类
java.text.SimpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat(String pattern）用给定的模式和认语言环境的日期格式符号构造simpLeDateFormat o参数:
String pattern :传递指定的模式模式:区分大小写的
y   年
M   月
d   日
H   时
m   分
s   秒
写对应的模式,会把模式替换为对应的日期和时间
"yyyy-MN-dd HH : mnm : ss"
“yyyy年“月ddH阳寸mm分ss秒”注意:
模式中的字母不能更改,连接模式的符号可以改变
表 1 DateFormat类的常用方法
方法	                                                                描述
-------------------------------------------------------------------------------------------------------------------------------
String format(Date date)	                                        将 Date 格式化日期/时间字符串
Calendar getCalendar()	                                            获取与此日期/时间格式相关联的日历
static DateFormat getDateInstance()	                                获取具有默认格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style)	                    获取具有指定格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style,Locale locale)	        获取具有指定格式化风格和指定语言环境的日期格式
static DateFormat getDateTimeInstance()	                            获取具有默认格式化风格和默认语言环境的日期/时间格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle)	获取具有指定日期/时间格式化风格和默认语言环境的日期/时间格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale)	获取具有指定日期/时间格式化风格和指定语言环境的日期/时间格式
static DateFormat getTimeInstance()	                                获取具有默认格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style)	                    获取具有指定格式化风格和默认语言环境的时间格式
                 style 0:DateFormat.FULL    y年M月d日EEEE
                       1:DateFormat.LONG    y年M月d日
                       2:DateFormat.MEDIUM	y/MM/dd
                       3:DateFormat.SHORT	y/MM/dd
static DateFormat getTimeInstance(int style,Locale locale)	        获取具有指定格式化风格和指定语言环境的时间格式
void setCalendar(Calendar newCalendar)	                            为此格式设置日历
Date parse(String source)	                                        将给定的字符串解析成日期/时间
 */
/*
import java.text.ParseException;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class DateFormat类 {
    public static void main(String[] args) throws ParseException {
        demo01();
        demo02();

        Date date=new Date();
        System.out.println(date);
        
        //获取一个DateFormat类型的实例，用来对Date类型的数据进行格式转换
        //DateFormat.getDateInstance()
        DateFormat df=DateFormat.getDateInstance();//默认格式（style）
        System.out.println("df: "+df.format(date));//df: 2022年7月8日
        
        DateFormat df2=DateFormat.getDateInstance(3);
        System.out.println("df2: "+df2.format(date));//df2: 2022年7月8日
        //0:DateFormat.FULL     2022年7月8日星期五
        //1:DateFormat.LONG     2022年7月8日
        //2:DateFormat.MEDIUM	2022年7月8日
        //3:DateFormat.SHORT	2022/7/8
        
        DateFormat df3=DateFormat.getDateTimeInstance();
        System.out.println("df3: "+df3.format(date));//df3: 2022年7月8日 上午8:36:08
        
        //String str="2016-9-21 17:03:39";
        String str="2022年7月8日 上午8:34:48";
        //将字符串转换成Date类型的格式
        Date date2=df3.parse(str); 
        System.out.println("字符串转换成Date   "+date2);//字符串转换成Date   Mon Jul 18 08:34:48 CST 2022
       
        //只显示“时间”：调用getTimeInstance()函数
        testGetTimeInstance() ;
     
        //只显示“日期”：调用getDateInstance()函数
        testGetDateInstance() ;
     
        //显示“日期”+“时间”：调用getDateTimeInstance()函数
        testGetDateTimeInstance() ;
     
        //测试format()函数
        testFormat();    
            
    }

    
    //使用DateFormat类中的方法format,把日期格式化为文本
    //String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串使用步骤:
    //1.创建SimpLeDateFormat对象,构造方法中传递指定的模式
    //2.调用simpLeDateFormat对象中的方法format,按照构造方法中指定的模式,把date日期格式化为符含模式的字符串(文本)
    private static void demo01(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
       //2.调用simpLeDateFormat对象中的方法format,按照构造方法中指定的模式,把date日期格式化为符含模式的字符串(文本)
        Date date = new Date();
        String format = simpleDateFormat.format(date);
        System.out.println(format);
        System.out.println(date);
    }
    
    //使用DateFormat类中的方法parse,把文本解析为日期
    //Date parse(String source)把符合模式的字符串,解析为Date日期使用步骤:
    //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
    //2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
    //  注意：
    //  public Date parse(String source) throws ParseExceptionparse方法声明了一个异常叫ParseException解析异常
	 //如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常
	 //调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续声明抛出这一个异常,要么try . ..catch自己处理这个异常
    
    private static void demo02() throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date parse = simpleDateFormat.parse("2022年07月05日 15时07分41秒\n");
        System.out.println(parse);
    }
    
     //测试DateFormat的getTimeInstance()函数
     //它共有3种重载形式：
     //(01) getTimeInstance()
     //(02) getTimeInstance(int style)
     //(03) getTimeInstance(int style, Locale locale)
     //@author skywang
     
    private static void testGetTimeInstance() {
      Date date = new Date(); 
   
      Locale locale = new Locale("fr", "FR");
//      Locale locale = new Locale("zh", "CN"); //构造方法为：Locale(String language, String country);
   
      // 等价于 DateFormat.getTimeInstance( DateFormat.MEDIUM);
      //DateFormat java.text.DateFormat.getTimeInstance(int style)
      DateFormat short0 = DateFormat.getTimeInstance( ); 
   
      // 参数是：“时间的显示样式”
      DateFormat short1 = DateFormat.getTimeInstance( DateFormat.SHORT); 
      DateFormat medium1 = DateFormat.getTimeInstance( DateFormat.MEDIUM); 
      DateFormat long1  = DateFormat.getTimeInstance( DateFormat.LONG); 
      DateFormat full1  = DateFormat.getTimeInstance( DateFormat.FULL); 
   
      // 参数是：“时间的显示样式” 和 “地区”
      DateFormat short2 = DateFormat.getTimeInstance( DateFormat.SHORT, locale); 
      DateFormat medium2 = DateFormat.getTimeInstance( DateFormat.MEDIUM, locale); 
      DateFormat long2  = DateFormat.getTimeInstance( DateFormat.LONG, locale); 
      DateFormat full2  = DateFormat.getTimeInstance( DateFormat.FULL, locale); 
   
      System.out.println("\n----getTimeInstance ----\n"
          + "(1.0) Empty Param  : " + short0.format(date) +"\n"    //上午9:14:32
          + "(2.1) One Param(s) : " + short1.format(date) +"\n"    //上午9:14
          + "(2.2) One Param(m) : " + medium1.format(date) +"\n"   //上午9:14:32
          + "(2.3) One Param(l) : " + long1.format(date) +"\n"     //CST 上午9:14:32
          + "(2.4) One Param(f) : " + full1.format(date) +"\n"     //中国标准时间 上午9:14:32
          + "(3.1) One Param(s,l): " + short2.format(date) +"\n"   //上午9:14
          + "(3.2) One Param(m,l): " + medium2.format(date) +"\n"  //上午9:14:32
          + "(3.3) One Param(l,l): " + long2.format(date) +"\n"    //CST 上午9:14:32
          + "(3.4) One Param(f,l): " + full2.format(date) +"\n"    //中国标准时间 上午9:14:32
          ); 
    }
   
    
     //测试DateFormat的getDateTimeInstance()函数
     //它共有3种重载形式：
     //(01) getDateInstance()
     //(02) getDateInstance(int style)
     //(03) getDateInstance(int style, Locale locale)
     
    public static void testGetDateTimeInstance() {
      Date date = new Date(); 
      Locale locale = new Locale("zh", "CN"); 
      //Locale locale = new Locale("en", "US"); 
   
      // 等价于 DateFormat.getDateTimeInstance( DateFormat.MEDIUM);
      //DateFormat java.text.DateFormat.getDateTimeInstance(int dateStyle, int timeStyle)
      DateFormat short0 = DateFormat.getDateTimeInstance(); 
   
      DateFormat short1 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); 
      DateFormat medium1 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); 
      DateFormat long1  = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); 
      DateFormat full1  = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); 
   
      DateFormat short2 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale); 
      DateFormat medium2 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale); 
      DateFormat long2  = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); 
      DateFormat full2  = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG, locale); 
   
      System.out.println("\n----getDateTimeInstance ----\n"
          + "(1.0) Empty Param  : " + short0.format(date) +"\n"//2022年7月8日 下午2:25:49
          + "(2.1) One Param(s) : " + short1.format(date) +"\n"//2022/7/8 下午2:25
          + "(2.2) One Param(m) : " + medium1.format(date) +"\n"//2022年7月8日 下午2:25:49
          + "(2.3) One Param(l) : " + long1.format(date) +"\n"//2022年7月8日 CST 下午2:25:49
          + "(2.4) One Param(f) : " + full1.format(date) +"\n"//2022年7月8日星期五 中国标准时间 下午2:25:49
          + "(3.1) One Param(s,l): " + short2.format(date) +"\n"//2022/7/8 CST 下午2:25:49
          + "(3.2) One Param(m,l): " + medium2.format(date) +"\n"//2022年7月8日 CST 下午2:32:01
          + "(3.3) One Param(l,l): " + long2.format(date) +"\n"//2022年7月8日 CST 下午2:32:01
          + "(3.4) One Param(f,l): " + full2.format(date) +"\n"//2022年7月8日星期五 CST 下午2:32:01
          ); 
    }
   
    
     //测试DateFormat的getDateInstance()函数
     //它共有3种重载形式：
     //(01) getDateTimeInstance()
     //(02) getDateTimeInstance(int dateStyle, int timeStyle)
     //(03) getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)
    public static void testGetDateInstance() {
      Date date = new Date(); 
   
      //Locale locale = new Locale("en", "US"); 
      Locale locale = new Locale("zh", "CN"); 
   
      // 等价于 DateFormat.getDateInstance( DateFormat.MEDIUM); 
      DateFormat short0 = DateFormat.getDateInstance( ); 
   
      DateFormat short1 = DateFormat.getDateInstance( DateFormat.SHORT); 
      DateFormat medium1 = DateFormat.getDateInstance( DateFormat.MEDIUM); 
      DateFormat long1  = DateFormat.getDateInstance( DateFormat.LONG); 
      DateFormat full1  = DateFormat.getDateInstance( DateFormat.FULL); 
   
      DateFormat short2 = DateFormat.getDateInstance( DateFormat.SHORT, locale); 
      DateFormat medium2 = DateFormat.getDateInstance( DateFormat.MEDIUM, locale); 
      DateFormat long2  = DateFormat.getDateInstance( DateFormat.LONG, locale); 
      DateFormat full2  = DateFormat.getDateInstance( DateFormat.FULL, locale); 
   
      System.out.println("\n----getDateInstance ----\n"
          + "(1.0) Empty Param  : " + short0.format(date) +"\n"//2022年7月8日
          + "(2.1) One Param(s) : " + short1.format(date) +"\n"//2022/7/8
          + "(2.2) One Param(m) : " + medium1.format(date) +"\n"//2022年7月8日
          + "(2.3) One Param(l) : " + long1.format(date) +"\n"//2022年7月8日
          + "(2.4) One Param(f) : " + full1.format(date) +"\n"//2022年7月8日星期五
          + "-(3.1) One Param(s,l): " + short2.format(date) +"\n"//7/8/22                    2022/7/8
          + "-(3.2) One Param(m,l): " + medium2.format(date) +"\n"//Jul 8, 2022              2022年7月8日
          + "-(3.3) One Param(l,l): " + long2.format(date) +"\n"//July 8, 2022               2022年7月8日
          + "-(3.4) One Param(f,l): " + full2.format(date) +"\n"//Friday, July 8, 2022       2022年7月8日星期五
          ); 
   
    }
   
     //测试DateFormat的format()函数
    public static void testFormat() {
      Date date = new Date(); 
      StringBuffer sb = new StringBuffer();
      FieldPosition field = new FieldPosition(DateFormat.YEAR_FIELD);
      DateFormat format = DateFormat.getDateTimeInstance();
   
      sb = format.format(date, sb, field);
      System.out.println("\ntestFormat"); 
      System.out.printf("sb=%s\n", sb);
      System.out.println(field);
    }
}
*/



 